
#ifndef BOUNCE_TWEEN_H
#define BOUNCE_TWEEN_H

// INCLUDES ********************************************************************

#include "Tween.h"

// FORWARD DECLARATIONS ********************************************************



// *****************************************************************************

// *****************************************************************************

//! BounceTween
//! 
//! Class defining linear change of a certain attribute
//! 
// *****************************************************************************

namespace Meteor
{
    class BounceTween : public Tween
    {        
        public:
            BounceTween( const TweenAttribute attr, const EaseType type,
                         const float startValue, const float targetValue,
                         const float duration);
        
            BounceTween( const TweenAttribute attr, const EaseType type,
                         const Vector2D& startValue,
                         const Vector2D& targetValue,
                         const float duration);

            ~BounceTween(){};
        
            const Vector2D Update( const float time);
        
        private:
            const float None( const float time,
                              const float offset,
                              const float change,
                              const float duration);
        
            const float In( const float time,
                            const float offset,
                            const float change,
                            const float duration);

            const float Out( const float time,
                             const float offset,
                             const float change,
                             const float duration);
        
            const float InOut( const float time,
                               const float offset,
                               const float change,
                               const float duration);
        
    }; // end of class BounceTween

} // end of namespace Meteor

#endif
